package com.fly.mapper;

import com.fly.bean.*;
import com.fly.util.Page;
import com.fly.vo.*;

import java.util.List;

public interface TaskMapperL {

    //根据PoleId查询damageState为0的数据
    DamageRecord selectDamageRecordByPoleId(Integer poleId);

    //根据用户Id分页查询任务信息
    List<Task> selectTaskByUsersId(UserIdPageVO userIdPageVO);

    //根据用户ID查找所有巡检任务_李嘉
    Integer selectCountTaskByUserId(UserIdPageVO UserIdPageVO);

    //根据条件查询巡检任务
    List<Task> selectAllTaskByCondition(TaskDatePageVo taskDatePageVo);

    //根据条件查询巡检任务总数
    Integer selectCountTaskByCondition(TaskDatePageVo taskDatePageVo);

    //将任务状态修改为执行
    void changeTaskState(Integer taskId);

    //根据任务ID查询任何详情和线路所属电杆
    TaskPoleVO selectTaskAndPoles(Integer taskId);

    //根据电杆ID查询相关详细信息
    PoleMsgVO selectMsgByPoleId(Integer poleId);

    //根据电杆ID插入回执录入
    void insertRecordByPoleId(DamageRecord damageRecord);

    //根据电杆ID修改回执录入
    void updateRecordByPoleId(DamageRecord damageRecord);

    //根据电杆ID查询回执信息
    CircuitryPoleRecordVO selectRecordByPoleId(Integer poleId);

    //查询所有缺陷记录
    List<DefectsVO> selectAllDefects(Page page);

    //查询所有缺陷记录总数
    Integer selectCountDefects();

    //查询条件查询缺陷记录
    List<DefectsVO> selectDefectsByCondition(findDefectsVO findDefectsVO);

    //根据条件查询缺陷记录总数
    Integer selectCountDefectsByCondition(findDefectsVO findDefectsVO);

    //修改缺陷级别
    void changeDefectsLevel(DamageIdLevelVO damageIdLevelVO);

    //查询所有缺陷记录且缺陷等级为空
    List<DefectsVO> selectAllDefectsIsNull(Page page);

    //查询所有缺陷记录且缺陷等级为空的总数
    Integer selectCountDefectsIsNull(Page page);

    //查询缺陷类型
    List<Defects> selectDefectsName();

    //查询线路
    Task selectTask(String taskNo);

    //根据电杆ID插入回执单
    void insertReceiptByTaskId(DamageRecordTaskVO damageRecordTaskVO);

    //根据条件查询所有缺陷记录且缺陷等级为空的总数
    Integer selectCountDefectsIsNullByCondition(findDefectsIsNullVO findDefectsIsNullVO);

    //根据条件查询所有缺陷记录且缺陷等级为空的总数
    List<DefectsVO> selectAllDefectsIsNullByCondition(findDefectsIsNullVO findDefectsIsNullVO);

    //根据任务ID查询未录入的电杆
    List<Pole> selectPolesByTaskIdNotInsert(UserIdTaskIdVO userIdTaskIdVO);
}
